﻿<UserControl x:Class="VmroleAuthor.Views.WebDeployApplicationView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:vw="clr-namespace:VmroleAuthor.Views" xmlns:vm="clr-namespace:VmroleAuthor.ViewModels"
             mc:Ignorable="d"             
            d:DesignWidth="900"
             >
    <UserControl.Resources>       
        <Style x:Key="TextBlockStyle" TargetType="{x:Type TextBlock}">
            <Style.Triggers>
                <Trigger Property="Validation.HasError" Value="true">
                    <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
                </Trigger>
            </Style.Triggers>          
        </Style>       
    </UserControl.Resources>
    <Grid VerticalAlignment="Top" ShowGridLines="False">
        <Grid.RowDefinitions >
            <RowDefinition Height="6" />
            <RowDefinition Height="Auto" />
            <RowDefinition MinHeight="30" />
            <RowDefinition Height="Auto" />           
            <RowDefinition Height="Auto" />          
            <RowDefinition Height="Auto" />
            <RowDefinition MinHeight="30" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="6"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="6"/>
        </Grid.ColumnDefinitions>       

        <!-- Deployment Name-->
        <Label Grid.Row="1" Grid.Column="0" >Deployment Name</Label>
        <TextBox x:Name="DeploymentName" Grid.Row="1" Grid.Column="2" Text="{Binding DeploymentName, ValidatesOnDataErrors=True}" Validation.ErrorTemplate="{x:Null}" />
        <ContentPresenter Grid.Row="2" Grid.Column="2" Content="{Binding ElementName=DeploymentName, Path=(Validation.Errors).CurrentItem}" />

        <!-- Application Payload Id-->
        <Label Grid.Row="3" Grid.Column="0" >Application Payload</Label>
        <ContentControl Grid.Row="3" Grid.Column="2" Content="{Binding Path= WebDeployPackage}" />       
        
        <!-- Package Password -->        
        <Label  Grid.Row="4" Grid.Column="0" >Package Password</Label>
        <ContentControl Grid.Row="4" Grid.Column="2" Content="{Binding Path=PackagePassword}" />                           
        
        <!-- Web Deploy Parameters -->
        <Label  Grid.Row="5" Grid.Column="0" >Web Deploy Parameters</Label>
        <DataGrid  x:Name="WebDeployParameters" Grid.Row="5" Grid.Column="2" AutoGenerateColumns="False" IsReadOnly="False" CanUserAddRows="False" CanUserDeleteRows="False" ItemsSource="{Binding WebDeployParameterViewModels, ValidatesOnExceptions=True}">            
            <DataGrid.RowStyle>
                <Style TargetType="DataGridRow">
                    <Setter Property="ValidationErrorTemplate" Value="{x:Null}"/>
                    <Style.Triggers>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter Property="BorderBrush" Value="Blue" />
                            <Setter Property="BorderThickness" Value="2" />
                            <Setter Property="Background" Value="LightBlue" />
                            <Setter Property="Foreground" Value="Black" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </DataGrid.RowStyle>
            <DataGrid.CellStyle>
                <Style TargetType="DataGridCell">
                    <Style.Triggers>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter Property="Background" Value="White" />
                            <Setter Property="Foreground" Value="Black" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </DataGrid.CellStyle>
            <DataGrid.Columns>
                <DataGridTemplateColumn Header="Parameter Name" MinWidth="250">
                    <DataGridTemplateColumn.CellTemplate>                     
                        <DataTemplate>
                            <TextBlock Style="{StaticResource ResourceKey=TextBlockStyle}" Text="{Binding ParameterName, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, NotifyOnValidationError=True}"/>                         
                        </DataTemplate>                      
                    </DataGridTemplateColumn.CellTemplate>
                    <DataGridTemplateColumn.CellEditingTemplate>                      
                        <DataTemplate>
                            <TextBox Text="{Binding ParameterName, UpdateSourceTrigger=LostFocus, ValidatesOnDataErrors=True, Mode=TwoWay,  NotifyOnValidationError=True}"/>                         
                        </DataTemplate>                      
                    </DataGridTemplateColumn.CellEditingTemplate>                  
                </DataGridTemplateColumn>           
                <DataGridTemplateColumn Header="Parameter Value" MinWidth="400">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Style="{StaticResource ResourceKey=TextBlockStyle}" Text="{Binding ParameterValue.PropertyValue,  ValidatesOnDataErrors=True, NotifyOnValidationError=True}"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                    <DataGridTemplateColumn.CellEditingTemplate>
                        <DataTemplate>
                            <ComboBox x:Name="WebDeployParamValue" IsEditable="True" 
                                      ItemsSource="{Binding  AvailableParameters}" 
                                      SelectedItem="{Binding ParameterValue.SelectedPropertyValue}" 
                                      Text="{Binding ParameterValue.PropertyValue, UpdateSourceTrigger=LostFocus, Mode=TwoWay, ValidatesOnDataErrors=True, NotifyOnValidationError=True}"
                                      />                           
                        </DataTemplate>
                    </DataGridTemplateColumn.CellEditingTemplate>
                </DataGridTemplateColumn>               
            </DataGrid.Columns>
         </DataGrid>
        <ContentPresenter Grid.Row="6" Grid.Column="2" Content="{Binding ElementName=WebDeployParameters, Path=(Validation.Errors).CurrentItem}" />
        
        <!-- Insert or Delete Rows using button -->
        <StackPanel Orientation = "Horizontal" HorizontalAlignment="Left" Grid.Row="7" Grid.Column="2" >
            <Grid>
                <Grid.RowDefinitions >
                    <RowDefinition Height="6" />
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="6" />
                  </Grid.RowDefinitions>
                 <Grid.ColumnDefinitions>                                    
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="10"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <Button Grid.Row="1" Grid.Column="0" Command="{Binding AddWebDeployParameterCommand}" >
                    <StackPanel Orientation = "Horizontal">
                        <Image  Source="..\Img\addgreen.png" Width="20" Height="20" ></Image>
                        <TextBlock Margin="5,0,0,0">Insert</TextBlock>
                    </StackPanel>
                </Button>
                <Button Grid.Row="1" Grid.Column="2" Command="{Binding DeleteWebDeployParameterCommand}" CommandParameter="{Binding ElementName=WebDeployParameters, Path=SelectedItem}">
                    <StackPanel Orientation = "Horizontal">
                        <Image  Source="..\Img\deletered.png" Width="20" Height="20"></Image>
                        <TextBlock Margin="5,0,0,0">Delete</TextBlock>
                    </StackPanel>
                </Button>              
            </Grid>                                    
        </StackPanel>
        
    </Grid>  
</UserControl>
